package com.cskaoyan.javase.method._2exercise;

import javax.xml.transform.sax.SAXTransformerFactory;

/**
 * 定义一个计算器（Calculator）它的功能有：
 * 加，减，乘，除
 * 求平方
 * 求a的n次方
 * ...
 *
 * @since 17:25
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Calculator {
    public static void main(String[] args) {
        System.out.println(square(10));
        System.out.println(power(2, 10));
    }

    // 加
    public static int add(int num1, int num2) {
        return num1 + num2;
    }

    // 减
    public static int subtract(int num1, int num2) {
        return num1 - num2;
    }

    // 乘
    public static int multiply(int num1, int num2) {
        return num1 * num2;
    }

    // 除
    public static double divide(int num1, int num2) {
        return num1 / (num2 * 1.0);
    }

    // 求平方
    public static int square(int a) {
        return a * a;
    }

    // 求a的n次方,幂运算
    public static int power(int a, int n) {
        /*
            Math是一个数学工具类,包含很多与数学相关的运算
            求幂运算就可以使用Math.pow(double,double)这个方法
            但是要注意,该方法的返回值是一个double类型
            a和n都是int类型,可以传入该方法,因为可以自动类型转换
            但是Math.pow(a, n)的返回值是一个double类型
            double --> int 是强转,不能直接作为返回值
            所以需要做一次强转

            除此之外,也可以使用循环自己完成
         */
        return (int) Math.pow(a, n);
    }

}
